package request

import (
	"github.com/astaxie/beego/validation"
	"shop-sys/pkg/constant"
)

type SysMenuRequest struct {
	MenuId     uint   `json:"menuId"`                  // 菜单ID
	Name       string `json:"name" binding:"required"` //菜单名称
	ParentId   uint   `json:"parentId"`                //父菜单ID，一级菜单为0
	ParentName string `json:"parentName"`              //父菜单名称
	Url        string `json:"url"`                     //菜单URL
	Perms      string `json:"perms"`                   //授权(多个用逗号分隔，如：user:list,user:create)
	Type       int    `json:"type" binding:"required"` //类型 0：目录   1：菜单   2：按钮
	Icon       string `json:"icon"`                    //菜单图标
	OrderNum   int    `json:"orderNum"`                //排序
}

func (s *SysMenuRequest) Valid(v *validation.Validation) {
	if s.Name == "" {
		v.SetError("Name", "菜单名称不能为空")
	} else if s.ParentId < 0 {
		v.SetError("ParentId", "上级菜单不能为空")
	} else if s.Type < constant.MenuType_CATALOG || s.Type > constant.MenuType_BUTTON {
		v.SetError("Type", "菜单类型不符合规范")
	} else if s.Type == constant.MenuType_BUTTON {
		if s.Perms == "" {
			v.SetError("Perms", "授权标识不能为空")
		}
	} else if s.Type == constant.MenuType_MENU {
		if s.Url == "" {
			v.SetError("Url", "路由地址不能为空")
		}
	}
}
